#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QkeyEvent>
#include<Qtimer>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
//0.蛇的表示
//
//1.按键处理
//2.使用定时器
//    2.1关联信号槽
//    2.2启动定时器
//    2.3实现对应的超时处理函数
//3.渲染
typedef enum Direct{
    DIR_LEFT,
    DIR_RIGHT,
    DIR_UP,
    DIR_DOWN
}dir_t;

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

protected:
    //渲染，绘图
    void paintEvent(QPaintEvent *event);

    void addTop();
    void addDown();
    void addRight();
    void addLeft();

    //按键处理
    void keyPressEvent(QKeyEvent *event) ;

    void deleteLast();
private:
    Ui::Widget *ui;
    int moveFlag=DIR_UP;
    bool gameStart=false;

    //定时器
    QTimer *timer;
    int time=100;//超时时间间隔，毫秒

    //蛇
    QList<QRectF>snake;

    //小方块的宽高
    int nodeWidth=20;
    int nodeHeight=20;

protected slots:
    void timeout();
};


#endif // WIDGET_H
